# 将一个字符串转换成一个整数，要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
# 输入描述:
# 输入一个字符串,包括数字字母符号,可以为空
# 输出描述:
# 如果是合法的数值表达则返回该数字，否则返回0
# 示例：
# 输入：
# +2147483647
#     1a33
# 输出：
# 2147483647
#     0

# 注意，本题只需要返回一个整数就够了，他的输入输出例子容易误导人
# 本题不算难，但是要想到运用数组的index对应字符输出
# 而且网站上的测试结果也比较不对劲，python里面应该是没有对int数值进行大小限制的，你有多少内存，数字就能到多大，而且网站上不认可负数

def StrToInt(s):
    if not s:
        return 0
    s = s.strip()
    test_list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-']
    if s.count('+') > 1 or s.count('-') > 1 or ('+' in s and '-' in s):  # 排除‘+++12345--54223’类似这样的字符串
        return 0
    isNeg = False
    if s[0] == '-':
        isNeg = True
        s = s.replace('-', '')
    elif s[0] == '+':
        isNeg = False
        s = s.replace('+', '')

    temp = 0
    for i in s:
        if i in test_list:
            temp = temp * 10 + test_list.index(i)
        else:
            return 0
    temp = temp if not isNeg else 0 - temp
    if temp < -2147483648:
        temp = 0
    if temp >= 2147483648:
        temp = 0
    return temp


# print(10**7)
print(StrToInt('123'))
